<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>date_range 聚合 | ElasticSearch 7.7 权威指南中文版</title>
	<meta name="keywords" content="ElasticSearch 权威指南中文版, elasticsearch 7, es7, 实时数据分析，实时数据检索" />
    <meta name="description" content="ElasticSearch 权威指南中文版, elasticsearch 7, es7, 实时数据分析，实时数据检索" />
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
	<link rel="stylesheet" type="text/css" href="../static/styles.css" />
	<script>
	var _link = 'search-aggregations-bucket-daterange-aggregation.html';
    </script>
</head>
<body>
<div class="main-container">
    <section id="content">
        <div class="content-wrapper">
            <section id="guide" lang="zh_cn">
                <div class="container">
                    <div class="row">
                        <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                            <div style="color:gray; word-break: break-all; font-size:12px;">原英文版地址: <a href="https://www.elastic.co/guide/en/elasticsearch/reference/7.7/search-aggregations-bucket-daterange-aggregation.html" rel="nofollow" target="_blank">https://www.elastic.co/guide/en/elasticsearch/reference/7.7/search-aggregations-bucket-daterange-aggregation.html</a>, 原文档版权归 www.elastic.co 所有<br/>本地英文版地址: <a href="../en/search-aggregations-bucket-daterange-aggregation.html" rel="nofollow" target="_blank">../en/search-aggregations-bucket-daterange-aggregation.html</a></div>
                        <!-- start body -->
                  <div class="page_header">
<strong>重要</strong>: 此版本不会发布额外的bug修复或文档更新。最新信息请参考 <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html" rel="nofollow">当前版本文档</a>。
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch 权威指南 [7.7]</a></span>
»
<span class="breadcrumb-link"><a href="search-aggregations.html">聚合</a></span>
»
<span class="breadcrumb-link"><a href="search-aggregations-bucket.html">桶(bucket)聚合</a></span>
»
<span class="breadcrumb-node">date_range 聚合</span>
</div>
<div class="navheader">
<span class="prev">
<a href="search-aggregations-bucket-datehistogram-aggregation.html">« date_histogram 聚合</a>
</span>
<span class="next">
<a href="search-aggregations-bucket-diversified-sampler-aggregation.html">diversified_sampler 聚合 »</a>
</span>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="search-aggregations-bucket-daterange-aggregation"></a>日期范围(date_range)聚合
</h2>
</div></div></div>
<p>
一个专用于日期值的范围(range)聚合。

这种聚合与普通<a class="xref" href="search-aggregations-bucket-range-aggregation.html" title="范围聚合" rel="nofollow">范围(range)</a>聚合的主要区别在于，<code class="literal">from</code> 和 <code class="literal">to</code> 的值可以用<a class="xref" href="common-options.html#date-math" title="日期计算" rel="nofollow">日期计算(Date Math)</a>表达式表示，并且还可以指定返回的 <code class="literal">from</code> 和 <code class="literal">to</code> 响应字段的日期格式。

请注意，此聚合包括每个范围的 <code class="literal">from</code>的值，但不包括 <code class="literal">to</code>的值。<span class="remark">左闭右开区间，即: [from, to) </span>
</p>
<p>示例：</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">POST /sales/_search?size=0
{
    "aggs": {
        "range": {
            "date_range": {
                "field": "date",
                "format": "MM-yyyy",
                "ranges": [
                    { "to": "now-10M/M" }, <a id="CO223-1"></a><i class="conum" data-value="1"></i>
                    { "from": "now-10M/M" } <a id="CO223-2"></a><i class="conum" data-value="2"></i>
                ]
            }
        }
    }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/452.console"></div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO223-1"><i class="conum" data-value="1"></i></a></p>
</td>
<td align="left" valign="top">
<p>小于当前时间减去10个月，向下舍入到月初。</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO223-2"><i class="conum" data-value="2"></i></a></p>
</td>
<td align="left" valign="top">
<p>等于等于当前时间加10个月，向下舍入到月初</p>
</td>
</tr>
</table>
</div>
<p>
在上面的示例中，我们创建了两个范围桶，第一个将“存储”10个月之前的所有文档，第二个将“存储”10个月之后的所有文档
</p>
<p>响应：</p>
<div class="pre_wrapper lang-console-result">
<pre class="programlisting prettyprint lang-console-result">{
    ...
    "aggregations": {
        "range": {
            "buckets": [
                {
                    "to": 1.4436576E12,
                    "to_as_string": "10-2015",
                    "doc_count": 7,
                    "key": "*-10-2015"
                },
                {
                    "from": 1.4436576E12,
                    "from_as_string": "10-2015",
                    "doc_count": 0,
                    "key": "10-2015-*"
                }
            ]
        }
    }
}</pre>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="_missing_values_2"></a>缺失的值
</h3>
</div></div></div>
<p>
参数 <code class="literal">missing</code> 定义了如何处理缺少值的文档。

默认情况下，它们被忽略，但是也可以将它们视为有一个值。

这是通过添加一组 fieldname : value 映射来指定每个字段的默认值来实现的。
</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">POST /sales/_search?size=0
{
   "aggs": {
       "range": {
           "date_range": {
               "field": "date",
               "missing": "1976/11/30",
               "ranges": [
                  {
                    "key": "Older",
                    "to": "2016/02/01"
                  }, <a id="CO224-1"></a><i class="conum" data-value="1"></i>
                  {
                    "key": "Newer",
                    "from": "2016/02/01",
                    "to" : "now/d"
                  }
              ]
          }
      }
   }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/453.console"></div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO224-1"><i class="conum" data-value="1"></i></a></p>
</td>
<td align="left" valign="top">
<p>在 <code class="literal">date</code> 字段中没有值的文档将被添加到"Older"桶中，就好像它们的日期值为“1976-11-30”一样。</p>
</td>
</tr>
</table>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="date-format-pattern"></a>日期格式/模式
</h3>
</div></div></div>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>此信息是从<a href="https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html" class="ulink" target="_top" rel="nofollow">日期时间格式化</a>复制的</p>
</div>
</div>
<p>所有ASCII字母都保留为格式模式字母，定义如下：</p>
<div class="informaltable">
<table border="1" cellpadding="4px">
<colgroup>
<col class="col_1">
<col class="col_2">
<col class="col_3">
<col class="col_4">
</colgroup>
<thead>
<tr>
<th align="left" valign="top">符号</th>
<th align="left" valign="top">含义</th>
<th align="left" valign="top">表现形式</th>
<th align="left" valign="top">示例</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="top"><p>G</p></td>
<td align="left" valign="top"><p>纪元</p></td>
<td align="left" valign="top"><p>text</p></td>
<td align="left" valign="top"><p>AD; Anno Domini; A</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>u</p></td>
<td align="left" valign="top"><p>年份</p></td>
<td align="left" valign="top"><p>year</p></td>
<td align="left" valign="top"><p>2004; 04</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>y</p></td>
<td align="left" valign="top"><p>纪元中的第几年</p></td>
<td align="left" valign="top"><p>year</p></td>
<td align="left" valign="top"><p>2004; 04</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>D</p></td>
<td align="left" valign="top"><p>一年中的第几天</p></td>
<td align="left" valign="top"><p>number</p></td>
<td align="left" valign="top"><p>189</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>M/L</p></td>
<td align="left" valign="top"><p>(第几个)月</p></td>
<td align="left" valign="top"><p>number/text</p></td>
<td align="left" valign="top"><p>7; 07; Jul; July; J</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>d</p></td>
<td align="left" valign="top"><p>一个月中的第几天</p></td>
<td align="left" valign="top"><p>number</p></td>
<td align="left" valign="top"><p>10</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>Q/q</p></td>
<td align="left" valign="top"><p>(第几个)季度</p></td>
<td align="left" valign="top"><p>number/text</p></td>
<td align="left" valign="top"><p>3; 03; Q3; 3rd quarter</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>Y</p></td>
<td align="left" valign="top"><p>week-based-year</p></td>
<td align="left" valign="top"><p>year</p></td>
<td align="left" valign="top"><p>1996; 96</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>w</p></td>
<td align="left" valign="top"><p>week-of-week-based-year</p></td>
<td align="left" valign="top"><p>number</p></td>
<td align="left" valign="top"><p>27</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>W</p></td>
<td align="left" valign="top"><p>一个月的第几周</p></td>
<td align="left" valign="top"><p>number</p></td>
<td align="left" valign="top"><p>4</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>E</p></td>
<td align="left" valign="top"><p>星期几</p></td>
<td align="left" valign="top"><p>text</p></td>
<td align="left" valign="top"><p>Tue; Tuesday; T</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>e/c</p></td>
<td align="left" valign="top"><p>本地化的星期几</p></td>
<td align="left" valign="top"><p>number/text</p></td>
<td align="left" valign="top"><p>2; 02; Tue; Tuesday; T</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>F</p></td>
<td align="left" valign="top"><p>一个月的第几周</p></td>
<td align="left" valign="top"><p>number</p></td>
<td align="left" valign="top"><p>3</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>a</p></td>
<td align="left" valign="top"><p>上午/下午</p></td>
<td align="left" valign="top"><p>text</p></td>
<td align="left" valign="top"><p>AM; PM</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>h</p></td>
<td align="left" valign="top"><p>12小时制的钟点(1-12)</p></td>
<td align="left" valign="top"><p>number</p></td>
<td align="left" valign="top"><p>12</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>K</p></td>
<td align="left" valign="top"><p>12小时制的小时 (0-11)</p></td>
<td align="left" valign="top"><p>number</p></td>
<td align="left" valign="top"><p>0</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>k</p></td>
<td align="left" valign="top"><p>24小时制的钟点 (1-24)</p></td>
<td align="left" valign="top"><p>number</p></td>
<td align="left" valign="top"><p>0</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>H</p></td>
<td align="left" valign="top"><p>一天的小时 (0-23)</p></td>
<td align="left" valign="top"><p>number</p></td>
<td align="left" valign="top"><p>0</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>m</p></td>
<td align="left" valign="top"><p>分钟</p></td>
<td align="left" valign="top"><p>number</p></td>
<td align="left" valign="top"><p>30</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>s</p></td>
<td align="left" valign="top"><p>秒</p></td>
<td align="left" valign="top"><p>number</p></td>
<td align="left" valign="top"><p>55</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>S</p></td>
<td align="left" valign="top"><p>毫秒</p></td>
<td align="left" valign="top"><p>fraction</p></td>
<td align="left" valign="top"><p>978</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>A</p></td>
<td align="left" valign="top"><p>milli-of-day</p></td>
<td align="left" valign="top"><p>number</p></td>
<td align="left" valign="top"><p>1234</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>n</p></td>
<td align="left" valign="top"><p>纳秒</p></td>
<td align="left" valign="top"><p>number</p></td>
<td align="left" valign="top"><p>987654321</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>N</p></td>
<td align="left" valign="top"><p>一天的第几纳秒</p></td>
<td align="left" valign="top"><p>number</p></td>
<td align="left" valign="top"><p>1234000000</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>V</p></td>
<td align="left" valign="top"><p>时区ID</p></td>
<td align="left" valign="top"><p>zone-id</p></td>
<td align="left" valign="top"><p>America/Los_Angeles; Z; -08:30</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>z</p></td>
<td align="left" valign="top"><p>时区的名字</p></td>
<td align="left" valign="top"><p>zone-name</p></td>
<td align="left" valign="top"><p>Pacific Standard Time; PST</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>O</p></td>
<td align="left" valign="top"><p>本地化的时区偏移</p></td>
<td align="left" valign="top"><p>offset-O</p></td>
<td align="left" valign="top"><p>GMT+8; GMT+08:00; UTC-08:00;</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>X</p></td>
<td align="left" valign="top"><p><em>Z</em>基于0的时区偏移</p></td>
<td align="left" valign="top"><p>offset-X</p></td>
<td align="left" valign="top"><p>Z; -08; -0830; -08:30; -083015; -08:30:15;</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>x</p></td>
<td align="left" valign="top"><p>时区偏移</p></td>
<td align="left" valign="top"><p>offset-x</p></td>
<td align="left" valign="top"><p>+0000; -08; -0830; -08:30; -083015; -08:30:15;</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>Z</p></td>
<td align="left" valign="top"><p>时区偏移</p></td>
<td align="left" valign="top"><p>offset-Z</p></td>
<td align="left" valign="top"><p>+0000; -0800; -08:00;</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>p</p></td>
<td align="left" valign="top"><p>下一填充</p></td>
<td align="left" valign="top"><p>pad modifier</p></td>
<td align="left" valign="top"><p>1</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>'</p></td>
<td align="left" valign="top"><p>文本转义</p></td>
<td align="left" valign="top"><p>delimiter</p></td>
<td align="left" valign="top"><p>''</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>'</p></td>
<td align="left" valign="top"><p>单引号</p></td>
<td align="left" valign="top"><p>literal</p></td>
<td align="left" valign="top"><p>'</p></td>
</tr>
<tr>
<td align="left" valign="top"><p>[</p></td>
<td align="left" valign="top"><p>可选部分开始</p></td>
<td align="left" valign="top"></td>
<td align="left" valign="top"></td>
</tr>
<tr>
<td align="left" valign="top"><p>]</p></td>
<td align="left" valign="top"><p>可选部分结束</p></td>
<td align="left" valign="top"></td>
<td align="left" valign="top"></td>
</tr>
<tr>
<td align="left" valign="top"><p>#</p></td>
<td align="left" valign="top"><p>留作将来使用</p></td>
<td align="left" valign="top"></td>
<td align="left" valign="top"></td>
</tr>
<tr>
<td align="left" valign="top"><p>{</p></td>
<td align="left" valign="top"><p>留作将来使用</p></td>
<td align="left" valign="top"></td>
<td align="left" valign="top"></td>
</tr>
<tr>
<td align="left" valign="top"><p>}</p></td>
<td align="left" valign="top"><p>留作将来使用</p></td>
<td align="left" valign="top"></td>
<td align="left" valign="top"></td>
</tr>
</tbody>
</table>
</div>
<p>模式字母的数量决定了格式。</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
Text
</span>
</dt>
<dd>
文本样式是由使用的模式字母的数量确定的。

少于4个模式字母将使用短格式，正好4个模式字母将使用完整的形式，正好5个字母将使用窄格式。

模式字母<code class="literal">L</code>、<code class="literal">c</code> 及 <code class="literal">q</code>指定文本样式的独立形式。
</dd>
<dt>
<span class="term">
Number
</span>
</dt>
<dd>
如果模式字母的数量为1，则使用最少的位数输出该值，且不进行填充。

否则，使用数字的数量作为输出字段的宽度，必要时用零填充。

以下模式字母对字母的数量有限制。

<code class="literal">c</code> 和 <code class="literal">F</code> 只能指定一个字母。

<code class="literal">d</code>、<code class="literal">H</code>、<code class="literal">h</code>、<code class="literal">K</code>、<code class="literal">k</code>、<code class="literal">m</code> 及 <code class="literal">s</code> 最多可以指定2个字母。

<code class="literal">D</code> 最多可以指定3个字母。
</dd>
<dt>
<span class="term">
Number/Text
</span>
</dt>
<dd>
如果模式字母的数量为3或更多时，使用上面的 Text 规则，否则使用上面的 Number 规则。
</dd>
<dt>
<span class="term">
Fraction
</span>
</dt>
<dd>
以秒的小数形式输出纳秒字段。

纳秒值有九个数字，因此模式字母的数量是从1到9。

如果小于9，则纳秒值被截断，只输出最高有效位。
</dd>
<dt>
<span class="term">
Year
</span>
</dt>
<dd>
字母的数量决定了最小字段宽度，在该宽度以下使用填充。

如果字母的数量是2，则使用简化的两位数形式。

解析时，将使用基数2000进行解析，得到2000到2099(含)范围内的年份。

如果字母的数量小于4(但也不是2)，那么根据<code class="literal">SignStyle.NORMAL</code>，只输出负年份的符号。

否则，如果超出填充宽度，根据<code class="literal">SignStyle.EXCEEDS_PAD</code>，输出符号。
</dd>
<dt>
<span class="term">
ZoneId
</span>
</dt>
<dd>
输出时区ID，例如<code class="literal">Europe/Paris</code>。

如果字母的数量为2，则输出时区ID。

任何其他字母的数量都会抛出 <code class="literal">IllegalArgumentException</code> 异常。
</dd>
<dt>
<span class="term">
Zone names
</span>
</dt>
<dd>
这将输出时区ID的显示名称。

如果字母数是一、二或三，则输出简称；如果字母数为4，则输出全名；五个或更多字母抛出 <code class="literal">IllegalArgumentException</code>异常。
</dd>
<dt>
<span class="term">
Offset X 和 x
</span>
</dt>
<dd>
这将根据模式字母的数量格式化 offset。

一个字母只输出小时，如 <code class="literal">+01</code>，除非分钟是非零的，在这种情况下，分钟也输出，如 <code class="literal">+0130</code>。

两个字母输出小时和分钟，不带冒号，如 <code class="literal">+0130</code>。

三个字母输出小时和分钟，带冒号，如 <code class="literal">+01:30</code>。

四个字母输出小时、分钟和可选的秒，不带冒号，例如 <code class="literal">+013015</code>。

五个字母输出小时、分钟和可选的秒，带冒号，如 <code class="literal">+01:30:15</code>。

六个或更多的字母则抛出<code class="literal">IllegalArgumentException</code>异常。

当要输出的偏移为零时，模式字母 <code class="literal">X</code>(大写)将输出 <code class="literal">Z</code>，而模式字母 <code class="literal">x</code>(小写)将输出 <code class="literal">+00</code>、<code class="literal">+0000</code> 或 <code class="literal">+00:00</code>。
</dd>
<dt>
<span class="term">
Offset O
</span>
</dt>
<dd>
这将根据模式字母的数量格式化本地化的offset。

一个字母输出本地化offset的简短形式，它是本地化的offset的文本，如 <code class="literal">GMT</code>，包括不带前导零的小时、可选的2位数分钟和秒(如果非零)以及冒号，如 <code class="literal">GMT+8</code>。

四个字母输出完整的形式，这是本地化的offset的文本，如 <code class="literal">GMT</code>，具有两位数的小时和分钟字段，非零时的可选的第二个字段，以及冒号，例如 <code class="literal">GMT+08:00</code>。

任何其他字母计数都会抛出 <code class="literal">IllegalArgumentException</code>异常。
</dd>
<dt>
<span class="term">
Offset Z
</span>
</dt>
<dd>
这将根据模式字母的数量格式化offset。

一个、两个或三个字母输出小时和分钟，不带冒号，如 <code class="literal">+0130</code>。

当offset为零时，输出将为 <code class="literal">+0000</code>。

四个字母输出本地化offset的完整形式，相当于Offset-O的四个字母。

如果offset为零，输出将是相应的本地化offset文本。

五个字母输出小时、分钟，如果非零，可选秒，带冒号。

如果offset为零，则输出 <code class="literal">Z</code>。

六个或更多字母抛出 <code class="literal">IllegalArgumentException</code>异常。
</dd>
<dt>
<span class="term">
可选(optional)部分
</span>
</dt>
<dd>
可选部分标记的工作方式与调用 <code class="literal">DateTimeFormatterBuilder.optionalStart()</code>和 <code class="literal">DateTimeFormatterBuilder.optionalEnd()</code>完全一样。
</dd>
<dt>
<span class="term">
填充修饰符
</span>
</dt>
<dd>
将紧随其后的模式修改为用空格填充。

填充宽度由模式字母的数量决定。

这与调用 <code class="literal">DateTimeFormatterBuilder.padNext(int)</code>相同。
</dd>
</dl>
</div>
<p>
例如，<code class="literal">ppH</code>输出在左边用空格填充宽度为2的的一天中的小时。
</p>
<p>
任何无法识别的字母都是错误的。

除<code class="literal">[</code>、<code class="literal">]</code>、<code class="literal">{</code>、<code class="literal">}</code>、<code class="literal">#</code>和单引号之外的任何非字母字符将被直接输出。

尽管如此，还是建议在所有想要直接输出的字符周围使用单引号，以确保将来的更改不会破坏应用程序。
</p>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="time-zones"></a>日期范围聚合中的时区
</h3>
</div></div></div>
<p>通过指定 <code class="literal">time_zone</code> 参数，可以将日期从另一个时区转换为UTC。</p>
<p>时区可以指定为ISO 8601 UTC时差(例如+01:00或-08:00)，也可以指定为TZ数据库中的时区id之一。</p>
<p>
参数 <code class="literal">time_zone</code> 也适用于日期数学表达式中的舍入。

例如，要在CET时区中舍入到一天的开始，可以执行以下操作：
</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">POST /sales/_search?size=0
{
   "aggs": {
       "range": {
           "date_range": {
               "field": "date",
               "time_zone": "CET",
               "ranges": [
                  { "to": "2016/02/01" }, <a id="CO225-1"></a><i class="conum" data-value="1"></i>
                  { "from": "2016/02/01", "to" : "now/d" }, <a id="CO225-2"></a><i class="conum" data-value="2"></i>
                  { "from": "now/d" }
              ]
          }
      }
   }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/454.console"></div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO225-1"><i class="conum" data-value="1"></i></a></p>
</td>
<td align="left" valign="top">
<p>此日期将被转换为<code class="literal">2016-02-01T00:00:00.000+01:00</code>。</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO225-2"><i class="conum" data-value="2"></i></a></p>
</td>
<td align="left" valign="top">
<p><code class="literal">now/d</code> 将被舍入到CET时区中一天的开始。</p>
</td>
</tr>
</table>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="_keyed_response_4"></a>keyed 响应
</h3>
</div></div></div>
<p>将 <code class="literal">keyed</code> 标志设置为 <code class="literal">true</code>会将唯一的字符串键与每个桶相关联，并将范围作为哈希而不是数组返回：</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">POST /sales/_search?size=0
{
    "aggs": {
        "range": {
            "date_range": {
                "field": "date",
                "format": "MM-yyy",
                "ranges": [
                    { "to": "now-10M/M" },
                    { "from": "now-10M/M" }
                ],
                "keyed": true
            }
        }
    }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/455.console"></div>
<p>响应：</p>
<div class="pre_wrapper lang-console-result">
<pre class="programlisting prettyprint lang-console-result">{
    ...
    "aggregations": {
        "range": {
            "buckets": {
                "*-10-2015": {
                    "to": 1.4436576E12,
                    "to_as_string": "10-2015",
                    "doc_count": 7
                },
                "10-2015-*": {
                    "from": 1.4436576E12,
                    "from_as_string": "10-2015",
                    "doc_count": 0
                }
            }
        }
    }
}</pre>
</div>
<p>也可以为每个范围定制一个键：</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">POST /sales/_search?size=0
{
    "aggs": {
        "range": {
            "date_range": {
                "field": "date",
                "format": "MM-yyy",
                "ranges": [
                    { "from": "01-2015",  "to": "03-2015", "key": "quarter_01" },
                    { "from": "03-2015", "to": "06-2015", "key": "quarter_02" }
                ],
                "keyed": true
            }
        }
    }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/456.console"></div>
<p>响应：</p>
<div class="pre_wrapper lang-console-result">
<pre class="programlisting prettyprint lang-console-result">{
    ...
    "aggregations": {
        "range": {
            "buckets": {
                "quarter_01": {
                    "from": 1.4200704E12,
                    "from_as_string": "01-2015",
                    "to": 1.425168E12,
                    "to_as_string": "03-2015",
                    "doc_count": 5
                },
                "quarter_02": {
                    "from": 1.425168E12,
                    "from_as_string": "03-2015",
                    "to": 1.4331168E12,
                    "to_as_string": "06-2015",
                    "doc_count": 2
                }
            }
        }
    }
}</pre>
</div>
</div>

</div>
<div class="navfooter">
<span class="prev">
<a href="search-aggregations-bucket-datehistogram-aggregation.html">« date_histogram 聚合</a>
</span>
<span class="next">
<a href="search-aggregations-bucket-diversified-sampler-aggregation.html">diversified_sampler 聚合 »</a>
</span>
</div>
</div>

                  <!-- end body -->
                        </div>
                        <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                        
                        </div>
                    </div>
                </div>
            </section>
        </div>
    </section>
</div>
<script src="../static/cn.js"></script>
</body>
</html>